Isosurface extraction into splat hierarchy

ABSTRACT

A method of extracting isosurface data from hierarchical node data, including providing hierarchical node data representing an object, the hierarchical node data including a lowest hierarchy level having a plurality of leaf nodes and a plurality of higher hierarchy levels each having a plurality of non-leaf nodes each encompassing ones of the plurality of leaf nodes. The method also includes determining a plurality of leaf node splats each corresponding to one of the plurality of leaf nodes that includes a portion of an isosurface, wherein each of the plurality of leaf node splats is based on scalar data corresponding to at least one of the plurality of leaf nodes. A plurality of non-leaf node splats each corresponding to one of the plurality of non-leaf nodes that includes a portion of the isosurface is also determined, wherein each of the plurality of non-leaf node splats is based on a plurality of splats each corresponding to a lower hierarchical node.

CROSS-REFERENCE

[0001] This application is a continuation-in-part of U.S. patentapplication Ser. No. 10/306,464 entitled “EFFICIENT DATA STRUCTURE”filed on Nov. 27, 2002, which is hereby incorporated by reference in itsentirety.

[0002] This application is also a continuation-in-part of U.S. patentapplication Ser. No. 10/698,178 entitled “SYSTEM AND METHOD FORPROCESSING A HIERARCHICAL DATA TREE” filed on Oct. 31, 2003, which ishereby incorporated by reference in its entirety.

[0003] This invention was made with the United States Government supportunder 70NANB1H3021 awarded by the National Institute of Standards andTechnology (NIST). The United States Government has certain rights inthe invention.

BACKGROUND

[0004] The present disclosure relates generally to solid model datamanipulation and visualization and, more specifically, to systems andmethods for extracting isosurfaces into a splat hierarchy.

[0005] Visualization (or point rendering) of workpieces is a necessaryfunction of computer aided solid modeling. Conventionally, visualizationincludes converting solid or volume data to triangular or otherpolygonal mesh data. For example, the “marching cubes” algorithmsubdivides volume data into a series of small cubes, such that thecorner points of the cubes may be examined and an appropriate set ofpolygons may be generated to replace the cubes based on the examinationof the corner points. However, such a process is time-extensive andconsumes a substantial amount of computing resources.

[0006] Another rendering process utilizes a splat hierarchy. A splat isa computer-generated disk having a radius, center and normal unitvector, such that a solid model surfaces may be collectively representedby a large number of splats corresponding to points on or portions ofthe surfaces. Typically, rendering utilizing such splats employstriangular mesh data as an input, requiring solid volume data (e.g.,voxel data) or non-triangular mesh data to be converted to triangularmesh data before splat generation. While providing some improvement overthe marching cubes algorithm and other previous rendering techniques,the conversion of the mesh data into a splat hierarchy also requiressubstantial computing resources.

[0007] Accordingly, what is needed in the art is a system and methodthat addresses the above-discussed issues.

BRIEF DESCRIPTION OF THE DRAWINGS

[0008] Aspects of the present disclosure are best understood from thefollowing detailed description when read with the accompanying figures.It is emphasized that, in accordance with the standard practice in theindustry, various features are not drawn to scale. In fact, thedimensions of the various features may be arbitrarily increased orreduced for clarity of discussion.

[0009]FIG. 1 illustrates a flow chart diagram of one embodiment of amethod of visually rendering voxel data according to aspects of thepresent disclosure.

[0010]FIG. 2 illustrates a flow chart diagram of one embodiment of amethod of determining splats corresponding to leaf nodes according toaspects of the present disclosure.

[0011]FIG. 3 illustrates a schematic view of an exemplary node fordemonstrating one embodiment of the method shown in FIG. 2.

[0012]FIG. 4 illustrates a flow chart diagram of one embodiment of amethod of determining splats corresponding to non-leaf nodes accordingto aspects of the present disclosure.

[0013]FIGS. 5 and 6 illustrate schematic representations of at least aportion of one embodiment of a method of compressing a splat hierarchyaccording to aspects of the present disclosure.

[0014]FIG. 7 illustrates a flow chart diagram of one embodiment of amethod of rendering at least a portion of a splat hierarchy according toaspects of the present disclosure.

[0015]FIG. 8 illustrates a perspective view of one embodiment of a MEMSdevice rendering according to aspects of the present disclosure.

[0016]FIG. 9 illustrates a schematic view of one embodiment of a CADsystem according to aspects of the present disclosure.

DETAILED DESCRIPTION

[0017] The following disclosure provides many different embodiments, orexamples, for implementing different features of various embodiments.Specific examples of components and arrangements are described below tosimplify the present disclosure. These are, of course, merely examplesand are not intended to be limiting. In addition, the present disclosuremay repeat reference numerals and/or letters in the various examples.This repetition is for the purpose of simplicity and clarity and doesnot in itself dictate a relationship between the various embodimentsand/or configurations discussed.

[0018] Referring to FIG. 1, illustrated is a flow chart diagram of oneembodiment of a method 100 of visually rendering voxel data according toaspects of the present disclosure. The method 100 includes a step 110 inwhich hierarchical solid model data to be visualized is provided.However, aspects of the present disclosure are also applicable and/orreadily adaptable to 2-dimensional data. Thus, although aspectsdisclosed herein may be discussed with respect to 3-dimensional data,such description does not limit the scope of the present disclosure orindividual aspects thereof to 3-dimensional applications. Similarly,aspects disclosed herein with respect to 2-dimensional data does notlimit the scope of the present disclosure or individual aspects thereofto 2-dimensional applications.

[0019] The hierarchical solid model data input in step 110 may be inoctree format having a root node, 8 nodes in a next lower hierarchy, 64nodes in a next lower hierarchy, etc. The nodes at the lowest hierarchylevel may be referred to as leaf nodes, whereas the nodes in all otherhierarchy levels may be referred to as non-leaf nodes. Each of thenon-leaf nodes encompasses one or more leaf nodes. For example, anon-leaf node in the lowest non-leaf node hierarchy level may encompass8 leaf nodes. The octree format may also be a DAG octree, or a sharedoctree.

[0020] The solid model represented by the hierarchical data input instep 110 may include an isosurface. In one embodiment, an isosurface isanalogous to an isocontour (or contour line) in 2-dimensional data ormodels. For example, an isosurface may be formed by connecting allpoints in a scalar field having the same scalar value. Aspects of thepresent disclosure are also applicable and/or readily adaptable toextracting surfaces other than or in addition to isosurfaces.

[0021] The method 100 also includes a step 120 in which leaf node splatseach corresponding to one of the leaf nodes are determined. Step 120 mayinclude determining a leaf node splat for each of the leaf nodes in thehierarchical data provided in step 110, or a subset thereof. Each of theleaf node splats is based on scalar values corresponding to at least oneof the leaf nodes. For example, the leaf node splats may be based onmaterial occupancy data corresponding to one or more leaf nodes, as inan embodiment discussed further below. Of course, scalar valuesrepresenting other characteristics of the leaf nodes may also beemployed within the scope of the present disclosure to generate the leafnode splats.

[0022] The method 100 also includes a step 130 in which non-leaf nodesplats each corresponding to one of the plurality of non-leaf nodes aredetermined. Step 130 may include determining a non-leaf node splat foreach of the non-leaf nodes in the hierarchical data provided in step110, or a subset thereof. Each of the plurality of non-leaf node splatsare based on a plurality of splats each corresponding to a lowerhierarchical node. For example, the splats in the lowest hierarchicallevel of non-leaf node splats are each based on a plurality of leaf-nodesplats, and the splats in the lowest hierarchical level of non-leaf nodesplats are also employed to determine the splats at the next higherhierarchical level of non-leaf node splats. One example of such adependence of the non-leaf node splats on lower hierarchy splats will bediscussed further below. Thus, the leaf node splats and non-leaf nodesplats may collectively form a splat hierarchy, such as a splat octreeor other tree structure, which may be in shared or DAG format.

[0023] The leaf node splats and non-leaf node splats, collectively orseparately, represent the isosurface. That is, at least a subset of theleaf node splats and/or the non-leaf node splats approximate or, in theaggregate, are substantially similar or identical to the isosurface.Thus, the “representation” of the isosurface by ones of the leaf nodesplats and/or the non-leaf node splats is intended to includeapproximation of the isosurface and also substantially similar oridentical representations of the isosurface. In one embodiment, therepresentation of the isosurface by the leaf node splats and/or non-leafnode splats may be skewed, shifted or substantially uniformly displacedfrom the original location of the isosurface within the hierarchicaldata provided in step 110. For example, the isosurface may be displacedby a distance equal to a fraction of a dimension of the leaf nodes inthe hierarchical data provided in step 110.

[0024] Each of the leaf node splats and non-leaf node splats determinedin steps 120 and 130 may be determined employing recursive processes,such as in top-down techniques. For example, to determine a higherhierarchy non-leaf node splat that does not yet exist, the focus ofanalysis may initiate at the non-leaf node corresponding to the as-yetnon-existent non-leaf node splat, and subsequently traverse the branchesof children nodes therein until lower hierarchy splats are located. Thelower hierarchy splats located in this manner may be employed tobuild-up the splat hierarchy to the non-leaf node at which the analysisstarted. If no splats are located as the branches of children aretraversed down to the leaf nodes, leaf node splats may be created beforethe analysis traverses back up the branches.

[0025] Such recursive analysis may also employ results matching. Forexample, the generation of leaf-node splats may depend on retrieved datafrom corresponding leaf-nodes. Particular or repeatedly locatedretrieved data may be stored in a cache with the corresponding splatgenerated therefrom such that, upon subsequent retrieval of the repeateddata, splat parameters may be read from the cache instead of beingrecalculated. Similarly, for non-leaf node splat generation, subsets oflower level hierarchy splat parameters and the corresponding higherlevel splat (or parameters thereof) may be cached such that, uponretrieval of repeated lower level splat parameters, the higher levelsplat being generated may be read from the cache rather than beingregenerated.

[0026] The method 100 may also include a step 140 in which the splathierarchy generated by steps 120 and 130 is compressed. For example,results matching or other methods may be employed to reduce theprocessing time and/or other requirements of generating, processing,storing and/or rendering the splat hierarchy. In one embodiment, suchcompression may include merging similarly oriented splats into onelarger splat, possibly at a higher hierarchy level. Methods ofcompressing splat data will be discussed further below.

[0027] In addition to being a portion of the method 100 of visuallyrendering voxel data, steps 110-130 and optionally step 140 may form oneembodiment of a method 150 of extracting surface data from voxel datathat may be employed for use in methods other than the method 100. Thatis, the method 150 may be employed for purposes other than visualizingor rendering surfaces existing in solid model data. For example, themethod 150 comprising steps 110-130 and optionally step 140 and/or othersteps may be employed in computerized tomography (CT) scanning toanalyze and/or manipulate data collected during such scanning. Methodsother than the method 100 may also be employed with the method 150 tovisualize or render data according to aspects of the present disclosure.

[0028] The method 100 also includes a step 160 in which a splat is drawnor otherwise rendered for each splat in at least a portion of the splathierarchy resulting from steps 120 and 130 discussed above. Anembodiment of such rendering will be discussed further below. In oneembodiment, only the splats visible from a predetermined perspective(e.g., satisfying frustum and/or backface culling conditions) may berendered in step 160.

[0029] Referring to FIG. 2, illustrated is a flow chart diagram of oneembodiment of a method 200 of determining splats corresponding to leafnodes according to aspects of the present disclosure. That is, themethod 200 determines or generates leaf node splats or datarepresentative thereof. The method 200 is one embodiment of step 120 ofthe methods 100, 150 shown in FIG. 1.

[0030] The method 200 includes a step 210 in which scalar data for ananchor leaf node and one or more neighboring leaf nodes is retrieved. Inone embodiment, scalar data may be retrieved for 7 neighboring leafnodes, such as in embodiments in which the scalar data is retrieved fromnode data in octree format. The scalar data may represent a commoncharacteristic of the leaf nodes, although possibly of varying values,such as material occupancy percentages of the leaf nodes. For example,in a MEMS or NEMS application embodiment, the scalar data may representor indicate that the anchor node comprises 80% silicon and that theneighboring nodes comprise various other or similar percentages ofsilicon.

[0031] The method 200 also includes a step 220 in which the retrievedscalar values are assigned to corners of their respective voxels. Forexample, the value 0.8 may be assigned to the top, right, front cornerof the anchor node, and similar values may be assigned to the top,right, front corners of their corresponding voxels. Of course, cornersother than the top, right, front corners may additionally oralternatively be employed in step 220, as well as other common pointswithin the voxels, such as voxel center points or voxel edge midpoints.Moreover, the scalar values assigned to each voxel in step 220 may notbe identical to the scalar values retrieved in step 210. For example,the assigned scalar values may be the retrieved scalar values afterperforming rounding, truncating and/or other processes. The assignedscalar values (as well as the retrieved scalar values) may also bequantized to decrease memory storage and processing requirements, suchas by representing the assigned scalar values with one byte rather thana floating point number. The assigned values may be temporarily retainedfor all or a portion of the execution of the methods 100, 150 or 200, ormay be more permanently stored for subsequent use.

[0032] In a step 230, intermediate points on the anchor leaf node edgesare determined based on the scalar values assigned in step 220. Forexample, FIG. 3, illustrates a 2-dimensional non-leaf node 300encompassing four leaf nodes 310, 320, 330, 340. A surface 350 extendsthrough leaf nodes 320, 330 and 340. The scalar value 1.0 may beassigned to the top right corner 315 of the leaf node 310 because amaterial substantially occupies the leaf node 310. Similarly, the scalarvalue 0.8 may be assigned to each of the top right corners 325, 335 ofthe leaf nodes 320 and 330, respectively, because the leaf nodes 320,330 are each about 80% occupied by the material, and the scalar value0.2 may be assigned to the top right corner 345 of the leaf node 340because the leaf node 340 is about 20% occupied by the material.Intermediate edge points 360 may be determined by finding the locationof the intermediate scalar value 0.5 between the scalar values assignedto the corners 325 and 345, and between the scalar values assigned tothe corners 335 and 345, possibly by a linear function. Functions otherthan linear functions may also or alternatively be employed to locatethe intermediate edge points 360, including best fit, scalar, quadraticand exponential functions. Moreover, methods other than those describedabove may be employed to determine the intermediate edge points 360, andmay also be employed for additional purposes. In one embodiment, anintermediate scalar value other than 0.5 may be employed, possibly torepresent the result of an etching, deposition, skew or shift operationin the resulting leaf node splats.

[0033] Returning to FIG. 2, the method 200 also includes a step 240 inwhich parameters for leaf node splats are determined based on theintermediate edge points determined. In one embodiment, the parametersmay include a plane, a center, a radius and/or a normal. Of course,other splat parameters may additionally or alternatively be determined.

[0034] The leaf node splat plane (or line, in 2-dimensionalapplications) may be determined by performing a least square fit of theintermediate edge points, possibly by linear regression. The leaf nodesplat plane may be offset from the isosurface. For example, as shown inFIG. 3, the intermediate edge points may each be offset from theisosurface. However, because each of the leaf node splat planesextracted according to aspects of the present disclosure are offset bysubstantially the same distance from the surface(s) of interest, theextracted surfaces will be substantially similar to the surfacesrepresented in the solid model data.

[0035] The leaf node splat normal may be mathematically derived from thefunction describing the leaf node splat plane. The leaf node splatcenter may be determined by averaging the locations of the intermediateedge points. The leaf node splat radius may be determined by selectingthe smallest radius that completely or substantially divides the leafnode into two portions. Such radius may be measured between the splatcenter and one of the intermediate edge points. Any or all of the leafnode splat parameters may also be determined recursively, possiblyemploying results matching, as described above.

[0036] Referring to FIG. 4, illustrated is a flow chart diagram of oneembodiment of a method 400 of determining splats corresponding tonon-leaf nodes according to aspects of the present disclosure. That is,the method 400 determines or generates non-leaf node splats or datarepresentative thereof. The method 400 is one embodiment of step 130 ofthe methods 100, 150 shown in FIG. 1.

[0037] The method 400 includes a step 410 in which splats and/or splatparameters (e.g., splat centers, normals and radii) are retrieved. Step410 may include retrieving the splats and/or splat parameterscorresponding to each of the nodes in the solid model data beingvisualized, or a subset thereof. The retrieved splats and/or splatparameters may correspond to leaf nodes and/or non-leaf nodes. In oneembodiment, the retrieved splats and/or splat parameters are selectedfrom the next lower hierarchy level relative to the hierarchy level ofthe splats being determined by the method 400. Moreover, each of thesplats and/or splat parameters may be retrieved before execution ofother process steps (such that all splats and/or splat parameters areretrieved prior to generating additional splats based thereon), or on anas-needed basis. For example, the step 410 and/or other portions of themethod 400 may include recursive processes, such as in embodimentsemploying DAG or shared octree data or other shared data formats. Insuch embodiments, only the splats or splat parameters required to createa splat may be retrieved before creating the splat.

[0038] The method 400 also includes a step 420 in which a non-leaf nodesplat plane is determined for one or more non-leaf nodes. The non-leafnode splat plane determined in step 420 (the “parent splat plane”) maybe based on or dependent on splat planes retrieved in step 410 (the“children splat planes”). For example, each parent splat plane may havea normal that is substantially equal to the average of the normals ofthe children splat planes. In one embodiment, the average may be aweighted average, possibly weighted in proportion to the radii of thechildren splats.

[0039] In a step 430, a non-leaf node splat radius is determined for oneor more non-leaf nodes. The non-leaf node splat radius determined instep 430 (the “parent splat radius”) may be based on or dependent onsplat radii retrieved in step 410 (the “children splat radii”). In oneembodiment, the radius of the parent splat may be the minimum requiredto completely or substantially separate the corresponding non-leaf nodeinto two portions. For example, the smallest radius that completely orsubstantially divides the non-leaf node corresponding to the parentsplat into two portions may be employed as the parent splat radius.

[0040] In a step 440, a non-leaf node splat cone is determined for oneor more non-leaf nodes. The non-leaf node splat cone determined in step440 (the “parent splat cone”) may be based on or dependent on splatnormals or cones retrieved in step 410 (collectively the “childrensplat-normals”). For example, the axis of the parent splat cone may bean average (e.g., a children-splat-radius-weighted-average) of thechildren splat normals, and the cone may be defined by the completerevolution of a unit vector about the axis, the unit vector having anangle relative to the axis that is substantially equal to the greatestangle among the children splat normals relative to the axis.Accordingly, the parent splat cone substantially encompasses each of thechildren splat normals. The parent splat cone may be stored with theother non-leaf splat parameters. In one embodiment, the cosine or othertrigonometric function of the cone angle may be stored rather than or inaddition to the cone angle. Moreover, any of the splat parameters may bequantized prior to storing, and the splat parameters may be storedtemporarily or more permanently.

[0041] Referring to FIG. 5, illustrated is a schematic representation ofat least a portion of one embodiment of a method of compressing a splathierarchy according to aspects of the present disclosure. The splathierarchy may be one such as a splat hierarchy created by recursivelyperforming the methods 200 and 400 described above. Such a compressionmethod may be referred to as a method of “squeezing” the splathierarchy. FIG. 5 includes Arrangement A depicting a 2-dimensional node500 encompassing four lower-hierarchy level nodes 510, 520, 530, 540 andthree splats 552, 554, 556 collectively extending through the nodes 520,530 and 540, respectively. Each of the three splats 552, 554, 556 aresubstantially aligned, or have substantially similar or identical splatplanes. Accordingly, the splats 552, 554, 556 may be combined in asingle splat extending through the corresponding nodes 520, 530 and 540.Thus, in one embodiment, the splats 552, 554, 556 may be replaced with asingle, higher-hierarchy level splat 560. Thus, FIG. 5 also includesArrangement B depicting the 2-dimensional node 500 having the splat 560extending therethrough, such that the splats 552, 554, 556 of the lowerhierarchy nodes 520, 530, 540 need not be subsequently referred toand/or stored in memory. The replacement splat 560 is substantiallyaligned or coplanar with the splats 552, 554, 556, has a radius that islarger than the radius of each of the replaced splats 552, 554, 556, andalso has a splat cone substantially encompassing the normals of thereplaced splats 552, 554, 556 and any of their children.

[0042] In one embodiment, such combination of substantially alignedplanes may be performed only if additional conditions are met. One suchcondition may be that the neighboring splats may differ by at most onehierarchy level. For example, FIG. 6 illustrates schematicrepresentations (Arrangements A and B) of scenarios demonstrating whensuch a condition may or may not be satisfied according to one embodimentof splat hierarchy compression according to aspects of the presentdisclosure.

[0043] In Arrangement A, a lower hierarchy node 610 includes a splat 615that is proximate splats 625 of a neighboring, higher hierarchy levelnode 620, wherein each of the splats 625 correspond to children nodes ofnode 620. However, the splat 615 is one hierarchy level lower than thesplats 625. Combining the splats 625 into a single splat would result ina larger splat having a hierarchy level that is two hierarchy levelshigher than that of the splat 615. Consequently, the combinationcondition described above is not satisfied, and the splats 625 may notbe combined according to the method 500 described above.

[0044] In Arrangement B, a lower hierarchy node 630 includes a splat 635that is proximate splats 645 of a neighboring, higher hierarchy levelnode 640, wherein each of the splats 645 correspond to children nodes ofnode 640. However, the splat 635 has the same hierarchy level as thesplats 645. Combining the splats 645 into a single splat would result ina larger splat having a hierarchy level that is only one hierarchy levelhigher than that of the splat 635. Consequently, the combinationcondition described above is satisfied, and the splats 645 may becombined according to the method 500 described above.

[0045] Referring to FIG. 7, illustrated is a flow chart diagram of oneembodiment of a method 700 of rendering at least a portion of a splathierarchy according to aspects of the present disclosure. The method 700may be performed recursively, and may employ results matching, asdescribed above.

[0046] In a decisional step 710, splats are examined to determine ifthey are visible. Such determination may consider back-face culling, inwhich splats on a side of the solid object that is opposite therendering view point may not be rendered. The visibility determinationmay also consider visibility or frustum culling, in which only thosesplats within a predetermined view angle relative to the rendering viewpoint may be rendered. The visibility determination may also considerdetail culling. Splats determined to be not visible in step 710, andpossibly all lower hierarchy splats on the same hierarchy branch (splatchildren), are not rendered.

[0047] In a step 720, the non-rendered splats' siblings are examined todetermine if they have ever been traversed. Step 720 may includedetermining if non-rendered splats' siblings have been traversed duringa current iteration or a predetermined number of recent iterations ofthe method 700 (or a portion or variation thereof). The siblings maythen be traversed in a step 725. For example, the method 700 or aportion or variation thereof may be repeated for the siblings. As such,the method 700 may be recursive. If the siblings need not be traversed,as determined in step 720, the non-rendered splats' parents may thentraversed in a step 727. For example, the method 700 or a portion orvariation thereof may be repeated for the splats' parents (again,possibly in a recursive manner).

[0048] In a step 730, visible splats are examined to determine status aseither a leaf node splat or a non-leaf node splat. Visible leaf nodesplats are rendered in a step 735, possibly with no other considerationsbefore rendering. In decisional step 720, the drawn splats' siblings areexamined to determine if they have ever been traversed or,alternatively, if they have been traversed during a current iteration ora predetermined number of recent iterations of the method 700 (or aportion or variation thereof). The siblings may then be traversed instep 725, or the drawn splats' parents may then be traversed in step727, as discussed above.

[0049] For splats not found to be leaf node splats in step 730, adecisional step 740 compares the screen sizes of visible, non-leaf nodesplats to a threshold value. Splats having screen sizes less than thethreshold are rendered, such as in step 735. The threshold value may beadjusted (e.g., by a user) to maintain a desired frame rate of therendering. In one embodiment, the frame rate may be increased duringperiods in which the rendered image is being manipulated (e.g., rotated,translated, etc.) and decreased during time periods in which therendered image is stationary on the screen. Increasing the frame ratemay reduce the resolution of the displayed image, and decreasing theframe rate may increase the resolution of the displayed image.

[0050] The first child of splats having screen sizes greater than thethreshold are traversed in a step 745, by once again executing themethod 700 (or a portion or variation thereof) with the splat child.After traversing the first child of splats having screen sizes greaterthan the threshold in step 745, the siblings of the first child splatsare examined in decisional step 720, such that the siblings or theparents of the first child splats may subsequently be traversed in steps725, 727, as discussed above. Traversing splat parents may be, or may besimilar to, executing a “return” statement in C++ programming language.For example, such a return statement may indicate that a function hasended and that the caller of the function should continue to the nextstep. Thus, in one embodiment, after traversing child splats in step745, such a return statement would indicate that step 720 is the nextstep to be performed.

[0051] The methods of isosurface extraction and/or point renderingdescribed above have many applications. Referring to FIG. 8, illustratedis a perspective view of a MEMS device 800 as one example of anapplication of the method 100 shown in FIG. 1 according to aspects ofthe present disclosure. The MEMS device 800 may include one or more MEMSbidirectional actuators and/or other MEMS devices within the scope ofthe present disclosure.

[0052] Processing according to aspects of the present disclosure alsohas a large field of application in the medical field. For example, inmodeling irradiation in tumor therapy, magnetic resonance imaging (MRI)or computerized tomography (CT) scan data can be segmented into variousentities (e.g., bone, tissue, skin, etc.). These regions can then beprocessed according to aspects of the present disclosure, such as by themethod 100 shown in FIG. 1.

[0053] Referring to FIG. 9, illustrated is a schematic view of oneembodiment of a computer aided design (CAD) or other processing system900 constructed according to aspects of the present disclosure. Thesystem 900 may be designed to create engineered objects (e.g., NEMS,MEMS and/or other microelectronic devices) from, in part, standard cellcomponents. Moreover, the system 900 may be configured to extractisosurfaces from solid model data for subsequent rendering or othervisualization, among other actions.

[0054] The standard cell components may be stored in a library 901utilizing a mass storage device 906. For example, in a MEMs devicedesign, the cell components may include discrete MEMs elements, such asthermal actuators, electrostatic actuators, micro-grippers,micro-latches, micro-tethers, micro-rotators and/or the like. Thestandard cell components may define the respective spatial compositionof the various discrete elements.

[0055] A user interface 902 and a rendering program 903 may beimplemented as software processes executable on a computer system 905.In one embodiment, a user may “pick-and-place” discrete cell componentsutilizing the user interface 902 and, in response, the rendering program903 may select the respective cell component from the cell library 901.When the user “drops” the discrete cell component at a desired location,the rendering program 903 may locate the respective portions of anoctree representation 904 of the device being designed. The renderingalgorithm 903 may update the portions of the octree representation 904to reflect the addition of the cell component. Specifically, therespective elemental level nodes of the octree 904 may be created and/ormodified to reflect the material composition(s) of the cell component atthe respective locations. For MEMs devices, a binary or non-binary datastructure may be employed to identify possible material compositionssuch as semiconductor materials, oxides, ceramics, metals and/or thelike. Such rendering may include performing one or more of the methodsdescribed above.

[0056] It may follow from the preceding discussion that thevisualization or other rendering described above, or portions or aspectsthereof, may also be implemented as a program product. Such a programproduct may be employed with or executed by the system 900 shown in FIG.9. In one embodiment, the program product includes a computer-readablestorage medium and means recorded on the medium for providinghierarchical node data representing an object having an isosurface, thehierarchical node data including a lowest hierarchy level having aplurality of leaf nodes and a plurality of higher hierarchy levels eachhaving a plurality of non-leaf nodes each encompassing ones of theplurality of leaf nodes. The program product also includes meansrecorded on the medium for determining a plurality of leaf node splatseach corresponding to one of the plurality of leaf nodes that includes aportion of an isosurface, wherein each of the plurality of leaf nodesplats is based on scalar data corresponding to at least one of theplurality of leaf nodes. The program product also includes meansrecorded on the medium for determining a plurality of non-leaf nodesplats each corresponding to one of the plurality of non-leaf nodes thatincludes a portion of the isosurface, each of the plurality of non-leafnode splats based on a plurality of splats each corresponding to a lowerhierarchical node.

[0057] Another embodiment of a program product according to aspects ofthe present disclosure also includes means recorded on the medium forrendering a plurality of splats partially populating a splat hierarchyresulting from the determination of the pluralities of leaf node splatsand non-leaf node splats. The storage medium may be a magnetic oroptical recording medium which is readable by a computer, such as by thesystem 900 shown in FIG. 9. The storage medium may also be a networkdistribution medium, such as may be employed for downloading the programproduct over a wired and/or wireless network.

[0058] Thus, in general, the present disclosure provides a method ofextracting isosurface data from hierarchical node data, includingproviding hierarchical node data representing an object, thehierarchical node data including a lowest hierarchy level having aplurality of leaf nodes and a plurality of higher hierarchy levels eachhaving a plurality of non-leaf nodes each encompassing ones of theplurality of leaf nodes. The method also includes determining aplurality of leaf node splats each corresponding to one of the pluralityof leaf nodes that includes a portion of an isosurface, wherein each ofthe plurality of leaf node splats is based on scalar data correspondingto at least one of the plurality of leaf nodes. A plurality of non-leafnode splats each corresponding to one of the plurality of non-leaf nodesthat includes a portion of the isosurface is also determined, whereineach of the plurality of non-leaf node splats is based on a plurality ofsplats each corresponding to a lower hierarchical node.

[0059] The present disclosure also introduces a method of renderingisosurface data. In one embodiment, the method includes providinghierarchical node data representing an object, the hierarchical nodedata including a lowest hierarchy level having a plurality of leaf nodesand a plurality of higher hierarchy levels each having a plurality ofnon-leaf nodes each encompassing ones of the plurality of leaf nodes.The method also includes determining a plurality of leaf node splatseach corresponding to one of the plurality of leaf nodes that includes aportion of an isosurface, wherein each of the plurality of leaf nodesplats is based on scalar data corresponding to at least one of theplurality of leaf nodes. A plurality of non-leaf node splats eachcorresponding to one of the plurality of non-leaf nodes that includes aportion of the isosurface is also determined, wherein each of theplurality of non-leaf node splats is based on a plurality of splats eachcorresponding to a lower hierarchical node. A plurality of splatspartially populating a splat hierarchy resulting from the determinationof the pluralities of leaf node splats and non-leaf node splats may thenbe rendered.

[0060] A processing system for extracting isosurface data fromhierarchical node data is also provided in the present disclosure. Inone embodiment, the processing system includes means for providinghierarchical node data representing an object, the hierarchical nodedata including a lowest hierarchy level having a plurality of leaf nodesand a plurality of higher hierarchy levels each having a plurality ofnon-leaf nodes each encompassing ones of the plurality of leaf nodes.The processing system also includes means for determining a plurality ofleaf node splats each corresponding to one of the plurality of leafnodes that includes a portion of an isosurface, wherein each of theplurality of leaf node splats is based on scalar data corresponding toat least one of the plurality of leaf nodes. Means for determining aplurality of non-leaf node splats each corresponding to one of theplurality of non-leaf nodes that includes a portion of the isosurface isalso included in the processing system, wherein each of the plurality ofnon-leaf node splats is based on a plurality of splats eachcorresponding to a lower hierarchical node.

[0061] A processing system for rendering isosurface data is alsointroduced in the present disclosure. In one embodiment, the processingsystem includes means for providing hierarchical node data representingan object, the hierarchical node data including a lowest hierarchy levelhaving a plurality of leaf nodes and a plurality of higher hierarchylevels each having a plurality of non-leaf nodes each encompassing onesof the plurality of leaf nodes. The processing system also includesmeans for determining a plurality of leaf node splats each correspondingto one of the plurality of leaf nodes that includes a portion of anisosurface, wherein each of the plurality of leaf node splats is basedon scalar data corresponding to at least one of the plurality of leafnodes. Means for determining a plurality of non-leaf node splats eachcorresponding to one of the plurality of non-leaf nodes that includes aportion of the isosurface is also included in the processing system,wherein each of the plurality of non-leaf node splats is based on aplurality of splats each corresponding to a lower hierarchical node. Theprocessing system also includes means for rendering a plurality ofsplats partially populating a splat hierarchy resulting from thedetermination of the pluralities of leaf node splats and non-leaf nodesplats.

[0062] A program product is also provided in the present disclosure. Inone embodiment, the program product includes a computer-readable storagemedium and means recorded on the medium for providing hierarchical nodedata representing an object, the hierarchical node data including alowest hierarchy level having a plurality of leaf nodes and a pluralityof higher hierarchy levels each having a plurality of non-leaf nodeseach encompassing ones of the plurality of leaf nodes. The programproduct also includes means recorded on the medium for determining aplurality of leaf node splats each corresponding to one of the pluralityof leaf nodes that includes a portion of an isosurface, wherein each ofthe plurality of leaf node splats is based on scalar data correspondingto at least one of the plurality of leaf nodes. Means are also recordedon the medium for determining a plurality of non-leaf node splats eachcorresponding to one of the plurality of non-leaf nodes that includes aportion of the isosurface, wherein each of the plurality of non-leafnode splats is based on a plurality of splats each corresponding to alower hierarchical node.

[0063] Another embodiment of the program product also includes meansrecorded on the medium for rendering a plurality of splats partiallypopulating a splat hierarchy resulting from the determination of thepluralities of leaf node splats and non-leaf node splats. The storagemedium may be a magnetic or optical recording medium, and may also be anetwork distribution medium.

[0064] A method of extracting isosurface data from a scalar field isalso provided in the present disclosure. In one embodiment, the methodincludes providing scalar field data and building a splat hierarchy.Building the splat hierarchy includes determining a plurality of leafnode splats each corresponding to one of the plurality of leaf nodesthat includes a portion of an isosurface, wherein each of the pluralityof leaf node splats is based on scalar data corresponding to at leastone of the plurality of leaf nodes. Building the splat hierarchy alsoincludes determining a plurality of non-leaf node splats each based on aplurality of lower hierarchical splats.

[0065] The foregoing has outlined features of several embodiments sothat those skilled in the art may better understand the detaileddescription that follows. Those skilled in the art should appreciatethat they can readily use the present disclosure as a basis fordesigning or modifying other processes and structures for carrying outthe same purposes and/or achieving the same advantages of theembodiments introduced herein. Those skilled in the art should alsorealize that such equivalent constructions do not depart from the spiritand scope of the present disclosure, and that they can make variouschanges, substitutions and alterations herein without departing from thespirit and scope of the present disclosure.

What is claimed is:
 1. A method of extracting isosurface data fromhierarchical node data, comprising: providing hierarchical node datarepresenting an object, the hierarchical node data including a lowesthierarchy level having a plurality of leaf nodes and a plurality ofhigher hierarchy levels each having a plurality of non-leaf nodes eachencompassing ones of the plurality of leaf nodes; determining aplurality of leaf node splats each corresponding to one of the pluralityof leaf nodes that includes a portion of an isosurface, each of theplurality of leaf node splats based on scalar data corresponding to atleast one of the plurality of leaf nodes; and determining a plurality ofnon-leaf node splats each corresponding to one of the plurality ofnon-leaf nodes that includes a portion of the isosurface, each of theplurality of non-leaf node splats based on a plurality of splats eachcorresponding to a lower hierarchical node.
 2. The method of claim 1wherein the hierarchical node data is 2-dimensional.
 3. The method ofclaim 1 wherein the hierarchical node data is 3-dimensional.
 4. Themethod of claim 1 wherein the hierarchical node data is in octreeformat.
 5. The method of claim 1 wherein the hierarchical node data isin shared octree format.
 6. The method of claim 1 wherein at least oneof the pluralities of leaf node splats and non-leaf node splats aredetermined recursively.
 7. The method of claim 6 wherein at least one ofthe pluralities of leaf node splats and non-leaf node splats aredetermined employing results matching.
 8. The method of claim 1 whereinthe scalar data is representative of leaf node material occupancypercentages.
 9. The method of claim 1 wherein determining the pluralityof leaf node splats includes approximating isosurface locations withinat least one of the leaf nodes based on the scalar values.
 10. Themethod of claim 9 wherein ones of the plurality of leaf node splats areeach partially defined by a leaf node splat center that is an average ofintermediate edge point locations, wherein the intermediate edge pointsapproximate a predetermined scalar value along an intersection betweenthe isosurface and leaf node faces.
 11. The method of claim 9 whereinones of the plurality of leaf node splats are each partially defined bya leaf node splat normal that approximates an isosurface normal.
 12. Themethod of claim 9 wherein ones of the plurality of leaf node splats areeach partially defined by a radius determined such that each of the ofleaf node splats divides each corresponding leaf node into two portions.13. The method of claim 12 wherein the radius of each of the pluralityof leaf node splats is the minimum radius that permits the correspondingleaf node splat to divide the corresponding leaf node into two portions.14. The method of claim 1 wherein each of the plurality of non-leaf nodesplats is partially defined by a plane based on a least square fit of aplurality of lower hierarchical splats.
 15. The method of claim 1wherein each of the plurality of non-leaf nodes splats is partiallydefined by a radius determined such that each of the of non-leaf nodesplats divides each corresponding non-leaf node into two portions. 16.The method of claim 15 wherein the radius of each of the plurality ofnon-leaf node splats is the minimum radius that permits thecorresponding non-leaf node splat to divide the corresponding non-leafnode into two portions.
 17. The method of claim 1 wherein each of theplurality of non-leaf node splats is partially defined by a normal and acone encompassing a plurality of lower hierarchy splat normals.
 18. Themethod of claim 1 further comprising compressing a splat hierarchypopulated by the pluralities of leaf node splats and non-leaf nodesplats.
 19. The method of claim 18 wherein compressing includesreplacing a plurality of substantially coplanar lower hierarchy splatswith a combine splat substantially coplanar with the plurality of lowerhierarchy splats, having a radius larger than the individual radii ofthe plurality of lower hierarchy splats, and having a splat conesubstantially encompassing a plurality of children splat normals.
 20. Amethod of rendering isosurface data, comprising: providing hierarchicalnode data representing an object having an isosurface, the hierarchicalnode data including a lowest hierarchy level having a plurality of leafnodes and a plurality of higher hierarchy levels each having a pluralityof non-leaf nodes each encompassing ones of the plurality of leaf nodes;determining a plurality of leaf n ode splats each corresponding to oneof the plurality of leaf nodes that includes a portion of an isosurface,each of the plurality of leaf node splats based on scalar datacorresponding to at least one of the plurality of leaf nodes;determining a plurality of non-leaf node splats each corresponding toone of the plurality of non-leaf nodes that includes a portion of theisosurface, each of the plurality of non-leaf node splats based on aplurality of splats each corresponding to a lower hierarchical node; andrendering a plurality of splats partially populating a splat hierarchyresulting from the determination of the pluralities of leaf node splatsand non-leaf node splats.
 21. The method of claim 20 wherein theplurality of rendered splats satisfy visibility conditions, wherein thesplat hierarchy also includes a plurality of non-rendered splats. 22.The method of claim 21 wherein one of the visibility conditions isbackface culling.
 23. The method of claim 21 wherein one of thevisibility conditions is viewpoint frustum culling.
 24. The method ofclaim 21 wherein one of the visibility conditions compares splat screensizes to threshold values.
 25. The method of claim 20 wherein therendering is performed recursively.
 26. A processing system forextracting isosurface data from hierarchical node data, comprising:means for providing hierarchical node data representing an object, thehierarchical node data including a lowest hierarchy level having aplurality of leaf nodes and a plurality of higher hierarchy levels eachhaving a plurality of non-leaf nodes each encompassing ones of theplurality of leaf nodes; means for determining a plurality of leaf nodesplats each corresponding to one of the plurality of leaf nodes thatincludes a portion of an isosurface, each of the plurality of leaf nodesplats based on scalar data corresponding to at least one of theplurality of leaf nodes; and means for determining a plurality ofnon-leaf node splats each corresponding to one of the plurality ofnon-leaf nodes that includes a portion of the isosurface, each of theplurality of non-leaf node splats based on a plurality of splats eachcorresponding to a lower hierarchical node.
 27. The system of claim 26wherein at least one of the means for determining the pluralities ofleaf node splats and non-leaf node splats includes means for recursivedetermination.
 28. The system of claim 27 wherein the recursivedetermination means is configured to employ results matching.
 29. Thesystem of claim 26 wherein the scalar data is representative of leafnode material occupancy percentages.
 30. A processing system forrendering isosurface data, comprising: means for providing hierarchicalnode data representing an object, the hierarchical node data including alowest hierarchy level having a plurality of leaf nodes and a pluralityof higher hierarchy levels each having a plurality of non-leaf nodeseach encompassing ones of the plurality of leaf nodes; means fordetermining a plurality of leaf node splats each corresponding to one ofthe plurality of leaf nodes that includes a portion of an isosurface,each of the plurality of leaf node splats based on scalar datacorresponding to at least one of the plurality of leaf nodes; means fordetermining a plurality of non-leaf node splats each corresponding toone of the plurality of non-leaf nodes that includes a portion of theisosurface, each of the plurality of non-leaf node splats based on aplurality of splats each corresponding to a lower hierarchical node; andmeans for rendering a plurality of splats partially populating a splathierarchy resulting from the determination of the pluralities of leafnode splats and non-leaf node splats.
 31. The system of claim 30 whereinthe means for rendering the plurality of splats includes means forverifying that ones of the plurality of splats satisfy visibilityconditions, wherein the splat hierarchy also includes a plurality ofnon-rendered splats.
 32. The system of claim 31 wherein one of thevisibility conditions is backface culling.
 33. The system of claim 31wherein one of the visibility conditions is viewpoint frustum culling.34. The system of claim 31 wherein one of the visibility conditionscompares splat screen sizes to threshold values.
 35. The system of claim30 wherein the rendering means includes means for performing renderingrecursively.
 36. A program product, comprising: a computer-readablestorage medium; means recorded on the medium for providing hierarchicalnode data representing an object, the hierarchical node data including alowest hierarchy level having a plurality of leaf nodes and a pluralityof higher hierarchy levels each having a plurality of non-leaf nodeseach encompassing ones of the plurality of leaf nodes; means recorded onthe medium for determining a plurality of leaf node splats eachcorresponding to one of the plurality of leaf nodes that includes aportion of an isosurface, each of the plurality of leaf node splatsbased on scalar data corresponding to at least one of the plurality ofleaf nodes; and means recorded on the medium for determining a pluralityof non-leaf node splats each corresponding to one of the plurality ofnon-leaf nodes that includes a portion of the isosurface, each of theplurality of non-leaf node splats based on a plurality of splats eachcorresponding to a lower hierarchical node.
 37. The program product ofclaim 36 wherein at least one of the means for determining thepluralities of leaf node splats and non-leaf node splats includes meansrecorded on the medium for recursive determination.
 38. The programproduct of claim 37 wherein the recursive determination means isconfigured to employ results matching.
 39. The program product of claim36 wherein the storage medium is a magnetic recording medium.
 40. Theprogram product of claim 36 wherein the storage medium is an opticalrecording medium.
 41. The program product of claim 36 wherein thestorage medium is a network distribution medium.
 42. A program product,comprising: a computer-readable storage medium; means recorded on themedium for providing hierarchical node data representing an object, thehierarchical node data including a lowest hierarchy level having aplurality of leaf nodes and a plurality of higher hierarchy levels eachhaving a plurality of non-leaf nodes each encompassing ones of theplurality of leaf nodes; means recorded on the medium for determining aplurality of leaf node splats each corresponding to one of the pluralityof leaf nodes that includes a portion of an isosurface, each of theplurality of leaf node splats based on scalar data corresponding to atleast one of the plurality of leaf nodes; means recorded on the mediumfor determining a plurality of non-leaf node splats each correspondingto one of the plurality of non-leaf nodes that includes a portion of theisosurface, each of the plurality of non-leaf node splats based on aplurality of splats each corresponding to a lower hierarchical node; andmeans recorded on the medium for rendering a plurality of splatspartially populating a splat hierarchy resulting from the determinationof the pluralities of leaf node splats and non-leaf node splats.
 43. Theprogram product of claim 42 wherein the means for rendering theplurality of splats includes means for verifying that ones of theplurality of splats satisfy visibility conditions, wherein the splathierarchy also includes a plurality of non-rendered splats.
 44. Theprogram product of claim 43 wherein one of the visibility conditions isbackface culling.
 45. The program product of claim 43 wherein one of thevisibility conditions is viewpoint frustum culling.
 46. The programproduct of claim 43 wherein one of the visibility conditions comparessplat screen sizes to threshold values.
 47. The program product of claim42 wherein the rendering means includes means for performing renderingrecursively.
 48. The program product of claim 42 wherein the storagemedium is a magnetic recording medium.
 49. The program product of claim42 wherein the storage medium is an optical recording medium.
 50. Theprogram product of claim 42 wherein the storage medium is a networkdistribution medium.
 51. A method of extracting isosurface data from ascalar field, comprising: providing scalar field data; and building asplat hierarchy, including: determining a plurality of leaf node splatseach corresponding to one of the plurality of leaf nodes that includes aportion of an isosurface, each of the plurality of leaf node splatsbased on scalar data corresponding to at least one of the plurality ofleaf nodes; and determining a plurality of non-leaf node splats eachbased on a plurality of lower hierarchical splats.